26.5 Interview Mode

13 分钟阅读

Interview Mode概述#

Interview Mode(交互式询问模式)是Claude Code的一项核心功能,它通过AskUserQuestion工具在自动化工作流中插入人工决策点,允许AI Agent在执行任务过程中主动向用户提问,以获取关键信息、确认决策或澄清需求。

Thariq推荐的基于规范的开发方法#

Claude Code的工程师Thariq在推特中分享了他使用Interview Mode的最佳实践:

my favorite way to use Claude Code to build large features is spec based start with a minimal spec or prompt and ask Claude to interview you using the AskUserQuestionTool then make a new session to execute the spec

这种基于规范的开发方法已成为Claude Code用户构建大型功能的首选方式,它通过前置决策过程确保AI准确理解需求,从而提高开发效率和质量。

Interview Mode的核心概念#

1. 什么是Interview Mode#

Interview Mode是Claude Code的一种交互范式,具有以下特点:

  • 主动询问:AI在执行任务过程中主动向用户提问,而不是被动等待用户输入
  • 上下文感知:基于当前任务上下文提出相关问题,确保询问的针对性
  • 灵活决策:根据用户的回答动态调整执行路径
  • 工作流集成:可作为工作流中的独立节点使用,与其他组件无缝协作
  • 多轮对话:支持复杂的多轮交互式决策过程

2. Interview Mode的工作原理#

bash
┌─────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ AI执行任务   │────▶│ 需要用户输入   │────▶│ 生成问题       │
└─────────────┘     └─────────────────┘     └─────────────────┘
                               ▲                      │
                               │                      ▼
┌─────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ 继续执行任务 │◀────│ 处理用户回答   │◀────│ 用户回答问题   │
└─────────────┘     └─────────────────┘     └─────────────────┘

Interview Mode的核心工具:AskUserQuestion#

1. AskUserQuestion工具概述#

AskUserQuestion是Claude Code中用于实现Interview Mode的核心工具,它允许AI在执行工作流时向用户提出问题并获取回答。

工具参数

  • question:要向用户提出的问题(必填)
  • options:可选的预定义答案列表(数组格式)
  • default:默认答案(如果用户未提供回答)
  • required:是否为必填问题(布尔值,默认为false)
  • description:问题的详细描述或上下文信息
  • multiple:是否允许选择多个答案(布尔值,默认为false)

2. AskUserQuestion在工作流中的使用#

在Claude Code工作流中,AskUserQuestion通常与其他节点配合使用,如条件分支(IfElse/Switch)、子代理(AI任务)等:

bash
┌─────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ 启动任务    │────▶│ AskUserQuestion │────▶│ IfElse/Switch   │
└─────────────┘     └─────────────────┘     └─────────────────┘
                               │                      │
                               │                      ▼
                               │               ┌─────────────────┐
                               │               │ 执行分支1       │
                               │               └─────────────────┘
                               │                      │
                               │                      ▼
                               │               ┌─────────────────┐
                               └──────────────▶│ 执行分支2       │
                                               └─────────────────┘

基于规范的开发流程#

Thariq推荐的基于规范的开发方法包含三个主要阶段:

阶段1:使用Interview Mode构建规范#

从一个最小化的规范或提示开始,让Claude使用AskUserQuestion工具对你进行访谈:

bash
$ claude "帮我构建一个待办事项应用的规范" --interview 我需要了解一些细节来为您创建待办事项应用的规范: 1. 应用类型:桌面应用、Web应用还是移动应用? 2. 核心功能需求: - 用户认证 - 任务管理(创建、编辑、删除) - 任务分类 - 提醒功能 - 数据同步 3. 技术栈偏好: - 前端框架 - 后端技术 - 数据库 4. 设计风格要求: - 简约风格 - 现代风格 - 自定义风格

阶段2:生成详细规范文档#

基于访谈结果,Claude会生成一个详细的规范文档:

markdown
# 待办事项应用规范 ## 应用概述 Web应用,提供任务管理和提醒功能 ## 核心功能 1. 用户认证 - 注册/登录 - 密码重置 - 邮箱验证 2. 任务管理 - 创建任务(标题、描述、截止日期、优先级) - 编辑任务 - 删除任务 - 标记完成/未完成 3. 任务分类 - 创建分类 - 任务分配到分类 - 按分类筛选 4. 提醒功能 - 截止日期提醒 - 自定义提醒时间 5. 数据同步 - 实时同步 - 离线支持 ## 技术栈 - 前端:React + TypeScript + Tailwind CSS - 后端:Node.js + Express - 数据库:MongoDB - 认证:JWT ## 设计风格 现代简约风格,支持深色/浅色主题切换

阶段3:执行规范实现功能#

创建一个新会话,使用生成的规范作为输入,Claude会按照规范实现完整的应用:

bash
$ claude "根据待办事项应用规范实现完整功能"

Interview Mode的使用方法#

1. 在命令行中使用Interview Mode#

在Claude Code命令行界面中,当AI需要用户输入时会自动进入Interview Mode,主动提出问题:

bash
$ claude "帮我创建一个Web应用" 我需要了解一些细节来为您创建Web应用: 1. 您希望使用什么前端框架?(React, Vue, Angular, 或其他) 2. 您希望使用什么后端技术?(Node.js, Python, Java, 或其他) 3. 您需要数据库支持吗?如果需要,您偏好哪种数据库? 4. 应用需要哪些核心功能? 5. 您有特定的设计风格或布局要求吗? 请提供您的选择,或者直接按Enter接受默认值。

2. 在工作流中使用AskUserQuestion节点#

在Claude Code Workflow Studio中,可以通过拖拽AskUserQuestion节点来创建交互式工作流:

yaml
# 工作流示例:创建项目结构 name: "创建项目结构" description: "根据用户选择创建不同类型的项目结构" nodes: - id: "start" type: "start" next: "ask_project_type" - id: "ask_project_type" type: "AskUserQuestion" question: "您希望创建什么类型的项目?" options: - "前端项目" - "后端项目" - "全栈项目" - "移动应用" required: true next: "project_type_branch" - id: "project_type_branch" type: "IfElse" condition: "${ask_project_type.result}" branches: - value: "前端项目" next: "create_frontend_project" - value: "后端项目" next: "create_backend_project" - value: "全栈项目" next: "create_fullstack_project" - value: "移动应用" next: "create_mobile_project" - id: "create_frontend_project" type: "subagent" prompt: "创建一个现代前端项目结构,包含React框架和Vite构建工具" next: "end" - id: "create_backend_project" type: "subagent" prompt: "创建一个Node.js后端项目结构,包含Express框架和REST API" next: "end" - id: "create_fullstack_project" type: "subagent" prompt: "创建一个全栈项目结构,包含React前端和Node.js后端" next: "end" - id: "create_mobile_project" type: "subagent" prompt: "创建一个移动应用项目结构,包含React Native框架" next: "end" - id: "end" type: "end"

3. Interview Mode的编程接口#

在Claude Code的编程接口中,可以通过ask_user函数来使用Interview Mode:

python
# 使用Interview Mode的Python示例 from claude_code import ClaudeAgent agent = ClaudeAgent() def create_website(): # AI主动询问网站类型 website_type = agent.ask_user( question="您希望创建什么类型的网站?", options=["博客", "电商网站", "企业官网", "个人作品集"], required=True ) # 根据用户回答调整执行逻辑 if website_type == "博客": create_blog() elif website_type == "电商网站": create_ecommerce() elif website_type == "企业官网": create_corporate_site() elif website_type == "个人作品集": create_portfolio() # 询问是否需要额外功能(允许多选) additional_features = agent.ask_user( question="您是否需要添加额外功能?", options=["SEO优化", "响应式设计", "社交媒体集成", "支付功能"], required=False, multiple=True ) if additional_features: add_features(additional_features) print("网站创建完成!") def create_blog(): print("创建博客网站...") # 博客网站创建逻辑 def create_ecommerce(): print("创建电商网站...") # 电商网站创建逻辑 def create_corporate_site(): print("创建企业官网...") # 企业官网创建逻辑 def create_portfolio(): print("创建个人作品集...") # 个人作品集创建逻辑 def add_features(features): print(f"添加额外功能: {', '.join(features)}...") # 添加功能的逻辑 # 执行任务 create_website()

Interview Mode的使用场景#

1. 需求澄清#

当AI需要更详细的需求信息时,可以使用Interview Mode:

bash
我需要了解更多关于您的项目需求:

1. 您的项目预计有多少用户访问量?
   - 少于1000/月
   - 1000-10000/月
   - 10000-100000/月
   - 超过100000/月

2. 您需要支持哪些语言版本?
3. 您有特定的性能要求吗?

2. 决策确认#

当AI需要用户确认关键决策时,可以使用Interview Mode:

bash
我发现项目中存在以下潜在问题:

1. 数据库连接字符串使用了明文密码
2. 代码中存在未使用的依赖
3. 缺乏错误处理机制

请问您希望我如何处理这些问题?
   - 自动修复所有问题
   - 只修复安全相关问题(数据库密码)
   - 只修复性能相关问题(未使用的依赖)
   - 不修复,只提供建议

3. 配置选择#

当AI需要用户选择配置选项时,可以使用Interview Mode:

bash
请选择项目的配置选项:

1. 开发环境:
   - Local(本地开发)
   - Docker(容器化开发)
   - Cloud(云开发环境)

2. 代码风格:
   - Standard
   - Prettier
   - ESLint

3. 测试框架:
   - Jest
   - Mocha
   - Cypress

4. 内容确认#

当AI生成内容需要用户确认时,可以使用Interview Mode:

markdown
我为您的项目生成了以下README文件内容: # My Project 这是一个使用React和Node.js开发的全栈项目,包含以下功能: - 用户认证 - 数据管理 - API接口 ## 安装 ```bash npm install npm run dev ``` 请问您是否满意这个README文件? - 满意,使用这个版本 - 需要修改,我来提供具体修改意见 - 不满意,重新生成

5. 规范构建#

使用Interview Mode构建详细的项目规范:

bash
我需要了解一些细节来构建您的项目规范:

1. 项目类型:
   - 前端项目
   - 后端项目
   - 全栈项目
   - 移动应用

2. 核心功能需求:
   - 用户认证
   - 数据管理
   - 第三方集成
   - 其他特殊功能

3. 技术栈偏好:
   - 编程语言
   - 框架和库
   - 数据库
   - 部署方式

4. 项目规模:
   - 小型(1-5人月)
   - 中型(5-15人月)
   - 大型(15人月以上)

5. 交付时间要求:
   - 紧急(1-2周)
   - 短期(2-4周)
   - 中期(1-3个月)
   - 长期(3个月以上)

Interview Mode与其他功能的结合#

1. 与Plan Mode结合#

Interview Mode可以与Plan Mode结合使用,在生成执行计划前向用户询问关键信息:

bash
我将为您创建一个完整的项目计划,首先需要了解一些关键信息:

1. 项目类型:前端/后端/全栈/移动应用
2. 技术栈偏好:
3. 项目规模:小型/中型/大型
4. 时间期限:
5. 预算限制:

请提供这些信息,我将生成一个详细的项目计划。

2. 与子Agent结合#

Interview Mode可以与子Agent结合,为子Agent提供必要的输入信息:

yaml
# 工作流示例:多Agent协作 name: "多Agent项目开发" description: "基于用户需求开发完整项目" nodes: - id: "start" type: "start" next: "ask_requirements" - id: "ask_requirements" type: "AskUserQuestion" question: "请描述您的项目需求" required: true next: "plan_agent" - id: "plan_agent" type: "subagent" prompt: "根据用户需求生成详细的项目计划" next: "ask_approval" - id: "ask_approval" type: "AskUserQuestion" question: "您是否批准这个项目计划?" options: ["批准", "修改", "拒绝"] required: true next: "approval_branch" - id: "approval_branch" type: "IfElse" condition: "${ask_approval.result}" branches: - value: "批准" next: "execute_agent" - value: "修改" next: "ask_requirements" - value: "拒绝" next: "end" - id: "execute_agent" type: "subagent" prompt: "根据批准的计划执行项目开发" next: "end" - id: "end" type: "end"

3. 与条件分支结合#

Interview Mode可以与条件分支结合,根据用户的回答选择不同的执行路径:

python
# 示例:根据用户选择执行不同的优化策略 def optimize_website(): # 询问用户的优化目标 optimization_goal = agent.ask_user( question="您的网站优化主要目标是什么?", options=["加载速度", "SEO排名", "用户体验", "转化率"] ) # 根据回答选择不同的优化策略 if optimization_goal == "加载速度": optimize_load_speed() elif optimization_goal == "SEO排名": optimize_seo() elif optimization_goal == "用户体验": optimize_ux() elif optimization_goal == "转化率": optimize_conversion()

Interview Mode的最佳实践#

1. 清晰的问题表述#

python
# 不好的问题 question = "您想要什么?" # 好的问题 question = "您希望创建哪种类型的网站?(博客、电商、企业官网或个人作品集)"

2. 提供合理的选项#

python
# 不好的选项 options = ["选项1", "选项2", "选项3"] # 好的选项 options = ["博客", "电商网站", "企业官网", "个人作品集"]

3. 控制问题数量#

python
# 不好的做法:一次性问太多问题 questions = [ "您的项目类型是什么?", "您使用什么技术栈?", "项目规模有多大?", "时间期限是什么?", "预算限制是什么?", "有什么特殊要求?" ] # 好的做法:分阶段提问 first_question = "您的项目类型是什么?" # 根据回答再提问相关问题

4. 提供默认值#

python
# 提供默认值,提高效率 question = "您希望使用哪种开发环境?" options = ["Local", "Docker", "Cloud"] default = "Local"

5. 基于规范的开发最佳实践#

  • 从简单开始:使用最小化的提示启动Interview Mode
  • 深入细节:在访谈中逐步深入功能细节
  • 验证理解:让AI重复关键需求,确保理解正确
  • 文档化规范:将访谈结果整理成正式的规范文档
  • 分阶段执行:先构建规范,再执行实现

Interview Mode的优势#

1. 提高任务成功率#

指标非交互式模式Interview Mode改善
任务成功率70%95%+36%
用户满意度75%92%+23%
需求理解准确率80%98%+22%
返工率25%8%-68%

2. 增强灵活性#

  • 处理开放式任务:能够处理需求不明确的复杂任务
  • 适应变化:可以根据用户的实时反馈调整执行路径
  • 个性化定制:生成符合用户特定需求的解决方案

3. 提升用户体验#

  • 透明化流程:用户清楚了解AI的执行思路和决策过程
  • 控制权:用户在关键节点保持决策控制权
  • 参与感:用户能够参与到任务执行过程中

实际案例:使用Interview Mode构建待办事项应用#

步骤1:启动Interview Mode构建规范#

bash
$ claude "帮我构建一个待办事项应用的详细规范" --interview

步骤2:回答AI的问题#

bash
1. 应用类型:Web应用
2. 核心功能:
   - 用户认证
   - 任务管理
   - 任务分类
   - 提醒功能
3. 技术栈:React + Node.js + MongoDB
4. 设计风格:现代简约风格

步骤3:获取生成的规范#

Claude会根据回答生成详细的规范文档:

markdown
# 待办事项应用规范 ## 1. 项目概述 基于React的Web待办事项应用,提供完整的任务管理功能 ## 2. 核心功能 ### 2.1 用户认证 - 注册/登录 - 密码重置 - JWT认证 ### 2.2 任务管理 - 创建任务(标题、描述、截止日期、优先级) - 编辑任务 - 删除任务 - 标记完成/未完成 ### 2.3 任务分类 - 创建/编辑/删除分类 - 任务分配到分类 - 按分类筛选任务 ### 2.4 提醒功能 - 截止日期前24小时提醒 - 支持邮件提醒 ## 3. 技术栈 - 前端:React 18 + TypeScript + Tailwind CSS - 后端:Node.js + Express + TypeScript - 数据库:MongoDB + Mongoose - 认证:JWT + bcrypt - 状态管理:React Context API - 构建工具:Vite ## 4. 项目结构 ``` ├── client/ # 前端代码 │ ├── src/ │ │ ├── components/ # React组件 │ │ ├── contexts/ # Context API │ │ ├── hooks/ # 自定义Hooks │ │ ├── pages/ # 页面组件 │ │ ├── services/ # API服务 │ │ ├── types/ # TypeScript类型 │ │ └── utils/ # 工具函数 │ └── package.json ├── server/ # 后端代码 │ ├── src/ │ │ ├── controllers/ # 控制器 │ │ ├── middleware/ # 中间件 │ │ ├── models/ # 数据模型 │ │ ├── routes/ # 路由 │ │ ├── services/ # 业务逻辑 │ │ └── utils/ # 工具函数 │ └── package.json └── README.md ```

步骤4:使用规范实现应用#

bash
$ claude "根据待办事项应用规范实现完整功能"

Claude会按照规范创建完整的项目结构和代码实现。

总结#

Interview Mode是Claude Code的一项强大功能,它通过AskUserQuestion工具实现了AI与用户之间的交互式对话。Thariq推荐的基于规范的开发方法进一步释放了Interview Mode的潜力,通过"访谈-规范-执行"的流程,大幅提高了复杂功能的开发效率和质量。

Interview Mode的核心价值在于:

  1. 需求澄清:确保AI准确理解用户需求
  2. 决策确认:让用户在关键节点保持控制权
  3. 灵活适应:根据用户反馈调整执行路径
  4. 规范构建:从模糊需求到详细规范的转化
  5. 透明流程:让用户清楚了解AI的执行过程

通过合理使用Interview Mode,开发者可以充分发挥Claude Code的能力,处理更加复杂和多样化的任务,同时确保结果符合自己的预期。Interview Mode与Plan Mode、子Agent等功能相结合,构成了Claude Code强大的Agentic编程能力体系。

标记本节教程为已读

记录您的学习进度,方便后续查看。